package com.zx.learn.flink.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author Ken.Zheng
 * @date 2023/06/03
 **/
@Slf4j
public class DataUtils {

    /**
     * 清理指定文件夹下的所有内容.
     *
     * @param dir 待清理的文件夹全路径
     */
    public static void clearDir(String dir) {
        log.debug("待清理的文件夹：{}", dir);
        File file = new File(dir);
        //判断文件不为null或文件目录存在
        if (file == null || !file.exists()) {
            log.warn("文件删除失败,请检查文件路径是否正确");
            return;
        }
        //取得这个目录下的所有子文件对象
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f : files) {
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()) {
                clearDir(f.getAbsolutePath());
            } else {
                //打印文件名
                log.warn("待清理的文件名",file.getName());
                f.delete();
            }
        }
        //删除空文件夹  for循环已经把上一层节点的目录清空。
        //file.delete();
    }

    /**
     * 读取data/input目录下的数据文件，转成行.
     *
     * @param dataInputDirFileName 文件名
     * @return List返回字符数据
     * @throws IOException 文件无法找到.
     */
    public static List<String> getData(String dataInputDirFileName) throws IOException {
        String fullFilePathName = PathUtil.CLASSPATH_DATA_INPUT + dataInputDirFileName;
        Stream<String> lines = Files.lines(Paths.get(fullFilePathName.substring(1)));
        return lines.collect(Collectors.toList());
//        //BufferedReader是可以按行读取文件
//        FileInputStream inputStream = new FileInputStream();
//        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//        List<String> dataList = new ArrayList<>();
//        String str = null;
//        while ((str = bufferedReader.readLine()) != null) {
//            dataList.add(str);
//        }
//
//        //close
//        inputStream.close();
//        bufferedReader.close();
//        return dataList;
    }
}
